home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / extenbat.arc / BATDOC.BAT < prev    next >
DOS Batch File  |  1983-07-01  |  38KB  |  991 lines

  1. bat * Loading on-line HELP and DOCUMENTATION .....
  2. bat * Written by F.Canova 10/5/83
  3. bat * (c) Copyright 1983 by Seaware Corp. all rights reserved.
  4.  
  5. bat    goto -line0
  6.  
  7. bat -header |* Routine prints general purpose header for help text
  8. bat    stack.purge |*    remove any pre-typed keystrokes.
  9. bat    cls begtype
  10. ╔════════════════════════════════════════════════════════════════════════════╗\0F
  11. end
  12. bat    type %s%s%s %h ............. Page %n
  13. bat    begtype
  14. ╚════════════════════════════════════════════════════════════════════════════╝
  15.     Press:  PGDN for next page,   PGUP for prev page,  HOME for main menu.
  16.  
  17. end
  18. bat    return
  19.  
  20. bat -scroll |* Routine accepts key for scrolling help text
  21. bat    inkey %k
  22. bat    if %k = KEY003         goto -opt0 |* Break key
  23. bat    if %k = KEY01B %L = 0       | return |* ESC  key
  24. bat    if %k = KEY147 %L = 0       | return |* Home key
  25. bat    if %k = KEY149 %L = %L - 1 | cls | return |* PgUp key
  26. bat    if %k = KEY151 %L = %L + 1 | cls | return |* PgDn key
  27. bat    goto -scroll |* ignore any other key.
  28.  
  29. bat    * ROUTINE TO HAVE USER GIVE A COMMAND A TRY !!
  30. bat    * %A = string which must match
  31. bat -tryit
  32. bat    begtype
  33.  
  34.   Enter your guess!  ;
  35. end
  36. bat -tryit.loop
  37. bat    if .%a <> . skip 8    |* end of string ?
  38. bat    begtype
  39.  
  40.  
  41. EXCELLENT !! - that's exactly it!
  42.  
  43. end
  44. bat    read Press the ─┘ key to continue to next section.....
  45. bat    return
  46. bat    %b = %a $ 1 1        |* get 1st letter
  47. bat    %a = %a $ 2        |* remove it from string
  48. bat -tryit.try
  49. bat    inkey %i        |* get a key.
  50. bat    if %i = KEY020 type %b; | goto -tryit.loop
  51. bat    if %i = %b type %i; | goto -tryit.loop
  52. bat    beep goto -tryit.try
  53.  
  54. bat -line0
  55. bat -line44
  56. bat    cls begtype
  57. \0F╔════════════════ BATDOC ═══════════════════╗
  58. ║     Menu driven HELP and DOCUMENTATION.   ║
  59. ╙───────────────────────────────────────────╜
  60.  
  61.     GENERAL:\07
  62. 1.    Introduction and how to use this Help.
  63. 2.    The user supported concept.
  64. 3.    BAT-BBS information. On-line users forum.
  65.  
  66.     \0FEXTENDED BATCH LANGUAGE version 2.0\07
  67. 4.    What BAT is.... an introduction.
  68. 5.    Printing to display.
  69. 6.    Reading data from users.
  70. 7.    Making decisions and controlling program flow.
  71. 8.    Using the keyboard stack.
  72. 9.    Sensing program's results.
  73. 10.    Assignment statements.
  74. 11.    Debugging aids.
  75. 12.    Additional information.
  76.  
  77. 0.    Exit.
  78.  
  79. END
  80.  
  81. bat -entry0
  82. bat    read Enter the number of your selection. > %A
  83. bat    if / = /%a    %a = 1
  84. bat    if %a < 13 if %a > 1/ cls goto -opt%a
  85. bat    if %a < :  if %a >  / cls goto -opt%a
  86. bat    beep begtype
  87. I DON'T KNOW THAT OPTION!
  88. Just enter a number 0 to 12 and press the ─┘ key.
  89.  
  90. end
  91. bat    goto -entry0
  92.  
  93. bat    -opt0    cls begtype
  94. Ready to leave on-line help! Press a key:
  95.  
  96. <\0FS\07>ystem    <\0FD\07>emo    <\0FH\07>elp
  97. end
  98. bat    -exiting inkey %a
  99. bat        if %a = S    exit
  100. bat        if %a = H    goto -line0
  101. bat        if %a = D    stack BATDEMO | exit
  102. bat        beep goto -exiting
  103.  
  104. bat -line1
  105. bat -opt1 %h = INTRODUCTION | %L = 1 | %N = 1.0
  106. bat    call -header
  107. bat    begtype
  108.     This program will provide you with help information on the use of
  109. the EXTENDED BATCH LANGUAGE version 2.0.  It is designed to allow for
  110. easy access and retrieval of information that would be harder to find
  111. by more conventional means.
  112.  
  113.     The information is broken up into multiple sections.  Each section
  114. may have several pages.  To access each page in order, just keep
  115. pressing the PGDN key.    At the top of your screen is the name of the
  116. section which you are in and the page number.
  117.  
  118. \0FNote:\07
  119.  
  120.     If you wish to directly enter another section now, press the \0fHOME\07
  121. key to return to the main menu, enter the proper \0fsection number\07 and
  122. press the \0f─┘\07 key.
  123.  
  124. end
  125. bat    call -scroll | goto -line%L
  126. bat -line2 %n = 1.1 | call -header | begtype
  127. While in any of these sections, there are just three keys needed:
  128.  
  129. PGDN -    This key will advance to the next page of any section. If
  130.     there are no more pages in the section, then it will advance
  131.     to the next section.
  132.  
  133. PGUP -    This key will back up to a previous page within a section.
  134.     If there are no more previous pages within a section, it
  135.     will backup to the previous section.
  136.  
  137. HOME or ESC - Either of these keys will return directly to the
  138.     main menu. From the menu, any section can be looked at
  139.     directly by entering the section number and pressing ─┘.
  140. end
  141. bat    call -scroll | goto -line%L
  142. bat -line3 %n = 1.2 | call -header | begtype
  143.   There are several sections where you will be given questions and answers.
  144. If you would like to peek and see answer without specifically answering it,
  145. you can press the space bar to reveal the answer letter by letter.
  146.  
  147.     One interesting facet you should know while using this on-line help
  148. and documentation is that you are using the EXTENDED BATCH LANGUAGE
  149. program to display and control these menus.
  150.  
  151.     Never before has a batch language been so powerful on the IBM
  152. personal computer as to be able to provide a facility like this.  In
  153. the following pages of description, we hope that you will see, as we
  154. did, that this program has extraordinary capability which does much
  155. more than just expand the capability of DOS.  In fact, it gives new
  156. power to your system by providing capabilities never before possible.
  157. end
  158. bat    call -scroll | goto -line%L
  159. bat -opt2
  160. bat -line4 %H = USER%sSUPPORTED | %L = 4 | %n = 2.0 | call -header | begtype
  161.  ╓─                                     ─╖
  162.  ║  PRIVATE USERS, If you are using this program and find it of value,      ║
  163.  ║        your contribution ($30 suggested) will be appreciated.      ║
  164.  ║                                      ║
  165.  ║  You  are encouraged to  copy and share this program with other users, ║
  166.  ║ on the  conditions that the    program is not    distributed  in  modified ║
  167.  ║ form, that no fee or consideration is charged, and that this notice is ║
  168.  ║ not bypassed or removed.                          ║
  169.  ║                                      ║
  170.  ║  In appreciation of your $30 contribution, you will be provided with a ║
  171.  ║ detailed users guide and  diskette  giving you complete  descriptions, ║
  172.  ║ examples, and tips on this program's use. All contributors are given   ║
  173.  ║ access to the BAT-BBS, a hot-line for assistance, tips, and updates.   ║
  174.  ║                                      ║
  175.  ║ The $30 license fee (per system) is required for COMMERCIAL USERS if   ║
  176.  ║ used in a place of business or incorporated into another product.      ║
  177.  ║                                      ║
  178.  ╙─  (c) Copyright 1982, 1983 by Seaware Corp. All rights reserved.     ─╜
  179. end
  180. bat    call -scroll | goto -line%L
  181. bat -line5 %n = 2.1 | call -header | begtype
  182.   For your $30 contribution, you will be provided with a detailed users
  183. guide.    This hardcopy manual has over 70 pages of descriptions, examples,
  184. useful utilities, and tips on this program's use.  It is prepunched for an
  185. IBM binder for ready reference.  You will also receive a diskette
  186. containing the latest program version and useful utilities.  All
  187. contributors are also invited to use the BAT-BBS, an on-line forum for
  188. user's ideas, tips, programs, and assistance.  (See next section for more
  189. information).  Only with your support can we help you even more.
  190.  
  191.   This concept was founded by Andrew Fugleman at Headlands Press, Inc.
  192. with a series of software called "Freeware"(tm).  I would like to thank
  193. Andrew for his inspiration and help.  Because I feel that good software
  194. should have someone standing behind it, we at Seaware want to put your
  195. contribution directly into support for you as our thanks of your support of
  196. us.  If you find this program of value, you are encouraged to send in your
  197. contribution.  Your support will not go unnoticed.
  198.  
  199. Seaware Corp. ≡≡≡≡ Post Office Box 1656 ≡≡≡≡ Delray Beach, FL 33444
  200. end
  201. bat    call -scroll | goto -line%L
  202. bat -opt3
  203. bat -line6 %H = BAT%s-%sBBS | %L = 6 | %n = 3.0 | call -header | begtype
  204.  
  205. One of the special services we provide to EXTENDED BATCH LANGUAGE
  206. users is through a communication medium called "BAT-BBS". This is
  207. a direct link from you to other users, as well as Seaware.
  208.  
  209.  
  210. The following list shows the many things that
  211.  
  212.     BAT-BBS can provide .  .  .
  213.  
  214. end
  215.  
  216. bat    call -scroll | goto -line%L
  217. bat -line7 %n = 3.1 | call -header | begtype
  218. FOR USERS WITH A MODEM:
  219.  
  220.     * BAT-BBS is a hotline for your questions!
  221.  
  222.     * Directly access our computer at Seaware via phone.
  223.  
  224.     * It will be ready to give helpful ideas.
  225.  
  226.     * Programs and Utilities are available to download.
  227.  
  228.     * Users are welcome to upload their programs/ideas.
  229.  
  230.     * Tips and techniques are on-line.
  231.  
  232.     * Converse with other users and program author via
  233.         electronic mail.
  234.  
  235.     * Receive program updates as soon as they are available.
  236. end
  237. bat    call -scroll | goto -line%L
  238. bat -line8 %n = 3.2 | call -header | begtype
  239.  
  240. IF YOU DON'T HAVE A MODEM:
  241.  
  242.     * You can still phone the BAT-BBS if you wish to
  243.       have your questions answered via voice.  A
  244.       recorder will take your message.
  245. end
  246. bat    call -scroll | goto -line%L
  247. bat -line9 %n = 3.3 | call -header | begtype
  248.  
  249.     You can access the bulletin board service by using any 300 baud or
  250. 1200 baud modem with your computer.  You should call the computer
  251. using 7 data bits, even parity, and 1 stop bit.
  252.  
  253.     You will also need a communication program such as PC-TALK III,
  254. CROSSTALK, or Asynchronous Communication Package version 2.0.  Contact
  255. your local computer store if you need more information or help with
  256. communication equipment or software.
  257.  
  258.   Service is from 00:01 hours to 18:00 hours daily, Eastern Standard Time.
  259. A phone number and your personal password will be supplied when we receive
  260. your contribution.
  261. end
  262. bat    call -scroll | goto -line%L
  263. bat -line10 %n = 3.4 | call -header | begtype
  264. To access BAT-BBS by modem:
  265.  
  266.     1. Call the BAT-BBS phone number and wait about two rings then
  267.        hang up.
  268.  
  269.     2. Call the BAT-BBS again, it will immediately answer the
  270.        phone and wait for the carrier from your modem.
  271.  
  272. To access BAT-BBS by voice:
  273.  
  274.     1. Call the BAT-BBS phone number and wait about four rings.
  275.        A recorder will take your question on the forth ring.
  276.  
  277.     2. You can take your time.  The recorder will continue as long
  278.        as you are talking.    Be sure to leave your NAME and ADDRESS for
  279.        a response.
  280. end
  281. bat    call -scroll | goto -line%L
  282. bat -opt4
  283. bat -line11 %H = INTRODUCTION | %L = 11| %n = 4.0 | call -header | begtype
  284.   BAT is short for Extended Batch Language.  BAT is a powerful productivity
  285. tool for the IBM Personal Computer.  It represents a significant advance in
  286. providing a comprehensive yet easy to learn and use facility for
  287. controlling tasks you give your computer.  It can even give you on-line
  288. documentation SUCH AS THIS!
  289.  
  290.   BAT is a command programming language.  It is a high level language that
  291. can be used as a direct replacement or in conjunction with DOS batch files.
  292. It can operate with IBM DOS versions 1.0, 1.1, or 2.x.    Compared with
  293. standard DOS batch files, BAT has superior control structures, string
  294. handling, and user interfaces.    It also has tracing facilities, and is easy
  295. to learn and use.  Many aspects of the language are like BASIC.  Users of
  296. VM/370 will also find it similar to EXECs.  It seems that both "end users"
  297. and programmers find BAT a simple and effective language.
  298.  
  299. end
  300. bat    call -scroll | goto -line%L
  301. bat -line12 %n = 4.1 | call -header | begtype
  302. With Extended Batch Language, you can have:
  303.  
  304. -    Better control of messages to the screen
  305.  
  306. -    Accept responses from the user and create responses to programs
  307.  
  308. -    String handling operations (substring, length, etc.)
  309.  
  310. -    Arithmetic expressions and assignments
  311.  
  312. -    Comparisons and program return codes
  313.  
  314. -    Search for files or tell if they exist
  315.  
  316. -    Complete freedom to mix DOS and BAT commands within the same control file
  317.  
  318.  
  319. Let's look at how it measures up to today's DOS......
  320. end
  321. bat    call -scroll | goto -line%L
  322. bat -line13 %n = 4.2 | call -header | begtype
  323. Function    DOS 1.1     DOS 2.0     Extended Batch Lang.
  324. ----------    -------     -------     --------------------
  325. BEEP                        X
  326. CALL/RTN                    X
  327. CLS                X        X
  328. BEGSTACK                    X
  329. BEGTYPE                     X
  330. EXIT                X        X
  331. GOTO                X        X
  332. IF                Limited     X
  333. INKEY                        X
  334. READ                        X
  335. READSCRN                    X
  336. SKIP                        X
  337. STATEOF             Limited     X
  338. STACK                        X
  339. TYPE        Limited     X        X
  340. Assignments                    X
  341. TRACE                        X
  342. DOS Vars    X        X        X
  343. Global Vars                    X
  344. Return Codes            X        X
  345. end
  346. bat    call -scroll | goto -line%L
  347. bat -line14 %n = 4.3 | call -header | begtype
  348.   As you can see from the previous chart, Extended Batch Language has more
  349. power and enhanced capabilities than either DOS 1.1 or DOS 2.0.  This
  350. program uses these capabilities to solve common problems for......
  351.  
  352.   The system programmer - who needs to do long sequences of tasks between
  353. linker, compilers, debuggers, and editors.  He can now create an
  354. intelligent link between these programs.  For instance, he may wish to do a
  355. link depending on if the previous compile was successful.  He can also
  356. respond automatically from a keyboard "stack" into various utilities.
  357.  
  358.   The secretary - who has several types of tasks to perform (word
  359. processing, accounting packages, etc) and requires a simple way of changing
  360. from one type of task to another, perhaps with optional help text.
  361.  
  362.   The student - who wishes to go from one game to another without having to
  363. learn the system commands required to make each available.
  364.  
  365.   Testers - who wish to automate long, boring tests and procedures on the
  366. personal computer. An excellent tool for a manufacturing line.
  367. end
  368. bat    call -scroll | goto -line%L
  369. bat -line15 %n = 4.4 | call -header | begtype
  370.  
  371.   The effect of using BAT is to put "covers" on the programs and system
  372. that it controls.  A friendly, easy to use interface is easily created.
  373. Described in these pages is a solution to batch files through the use of
  374. BAT.
  375.  
  376.   Once you have looked over the descriptions of each command, browse
  377. through the BATDEMO.BAT file and look at the commands in operation.  By
  378. trying out some sample programs, you should be able to gain a full
  379. understand of how to write some powerful batch files by using Extended
  380. Batch Language.
  381.  
  382.  
  383.  
  384. Copyright (c) 1982, 1983 by Seaware Corp.           Program by
  385. All Rights reserved by Seaware Corp.               Frank Canova
  386.  
  387. end
  388. bat    call -scroll | goto -line%L
  389. bat -opt5
  390. bat -line16 %H = HOW%sTO%sPRINT | %L = 16| %n = 5.0| call -header| begtype
  391.  
  392.   The simplest thing to for Extended Batch Language to do is to print text
  393. on the display.  This is done by either of two commands, TYPE and BEGTYPE.
  394.  
  395.   The TYPE command can be used for something as simple as saying hello!
  396. For example:
  397.  
  398.     BAT TYPE HELLO THERE
  399.  
  400.   This is all that is needed.  This command can be typed directly from DOS
  401. (this is called immediate mode) or be entered into a file such as
  402. "TRIAL.BAT" (this is called direct execution mode).  To execute it as a BAT
  403. program with the file, just type the file's name "TRIAL" from DOS and you
  404. will see the results of the program "HELLO THERE" coming from BAT.
  405. end
  406. bat call -scroll | goto -line%L
  407. bat -line17 %n = 5.1 | call -header | begtype
  408.  
  409.   You can also put DOS variables into this command to display their
  410. contents.  For example, if the "TRIAL.BAT" file contained the line:
  411.  
  412.     BAT TYPE HELLO THERE %1 %2
  413.  
  414.   Then when we start the BAT program from DOS, we might enter:
  415.  
  416.     TRIAL COMPUTER USER
  417.  
  418.   DOS will automatically store the words after the program name into its
  419. variables.  Therefore, in the TYPE command, we will see contents of these
  420. variables on the screen.  The resulting message would be:
  421.  
  422.     HELLO THERE COMPUTER USER
  423. end
  424. bat    call -scroll | goto -line%L
  425. bat -line18 %n = 5.2 | call -header | begtype
  426.  
  427.   There is a second method of putting text onto the display.  This is with
  428. the BEGTYPE command.  Although it will not display the contents of
  429. variables, it is very useful for displaying large blocks of text, such as
  430. menus.    For example, if the "TRIAL.BAT" file contains:
  431.  
  432.     BAT BEGTYPE
  433.     This is a large block of text. It is useful for menus. Note
  434.     that Upper/Lower case characters are displayed intact here.
  435.     The block is always ended with "END" in the first column
  436.     after the text finishes.
  437.     END
  438.  
  439.   When executed, the "TRIAL.BAT" program will display:
  440.  
  441.     This is a large block of text. It is useful for menus. Note
  442.     that Upper/Lower case characters are displayed intact here.
  443.     The block is always ended with "END" in the first column
  444.     after the text finishes.
  445. end
  446. bat    call -scroll | goto -line%L
  447. bat -line19 %n = 5.3 | call -header | begtype
  448.  
  449.   There is an additional advantage to using BEGTYPE command.  This command
  450. can also highlight text to the user.  This is done by using the form:
  451. [\\hex] within the text block.
  452.  
  453.   For example if the text block contained \\0F within the text, the result
  454. would be \0F High Intensity Text !  \07.
  455.  
  456.   By choosing different values, the screen attributes can be controlled to
  457. create inverted video, blinking, underlined, and very colorful text.
  458.  
  459.   An additional command CLS can be used to clear the display before
  460. printing data.    For instance, the combination "BAT CLS BEGTYPE" is quite
  461. useful for printing menus and text such as this screen.
  462. end
  463. bat    call -scroll | goto -line%L
  464. bat -line20
  465. bat begtype
  466.  
  467.     \0fNOW IT'S YOUR TURN !!!\07
  468.  
  469.  
  470. If the \0f%4\07 variable contains the word \0fDAY\07, what is the command to display
  471. the words "\0fFUN DAY\07" on the display?
  472.  
  473. end
  474. bat    %A = BAT%sTYPE%sFUN%s%%4
  475. bat    call -tryit
  476. bat -opt6
  477. bat -line20 %H = READING | %L = 20| %n = 6.0 | call -header | begtype
  478.   In order to get input from the user, there are two available commands,
  479. READ and INKEY.
  480.  
  481.   When the command word READ is seen in the batch file, an input line is
  482. accepted from the user.  All function keys are assigned to the normal DOS
  483. edit functions.  When ENTER is pressed, the input line is assigned to DOS
  484. variables.
  485.  
  486.   Each word will be assigned in order to the variables indicated after the
  487. READ command.  When there are no more variables after the READ command to
  488. assign, the remainder of the response is thrown away.  If there are more
  489. variables to be assigned after the READ command than there are words from
  490. the user, these variables will be cleared out to a empty state.  For
  491. example:
  492.  
  493.     BAT READ Please enter your name ==> %1 %2
  494.  
  495.   This would prompt the user and wait for him to enter two words.  These
  496. words will be saved in the %1 and %2 variables.
  497. end
  498. bat    call -scroll | goto -line%L
  499. bat -line21 %n = 6.1 | call -header | begtype
  500.  
  501.   Note that there does not have to be any variables indicated after the
  502. command READ.  In this case, BAT would wait for the enter key, throw away
  503. any response, then continue to process the next batch file command.
  504.  
  505. end
  506. bat    call -scroll | goto -line%L
  507. bat -line22 %n = 6.2 | call -header | begtype
  508.  
  509.   In the event that you wish to get a single keystroke from the user, the
  510. INKEY command should be used.
  511.  
  512.   This command will wait for the user to enter a single key on the keyboard
  513. and return its value in the optional variable.    This key can be not only
  514. letters, but all function keys, control keys, etc.  For example:
  515.  
  516.     BAT INKEY Press any key to continue... %0
  517.  
  518.   When the user presses a single key, that key is saved into the variable %0.
  519.  
  520.   If the key that is pressed is in the range of "!" to "z" (decimal 33 to
  521. 122) then the key saved to the optional variable. If you wish this key to be
  522. echoed to the display, you must specifically use the TYPE command.
  523.  
  524. end
  525. bat    call -scroll | goto -line%L
  526. bat -line23 %n = 6.3 | call -header | begtype
  527.  
  528.   If the key is not in the above range, then the key will be converted to
  529. the form "KEYxxx" where xxx is the hex value of the key.  Extended key
  530. codes will be in the range KEY100 to KEY1FF and nonextended key codes will
  531. be in the range KEY000 to KEY0FF.  Refer to Appendix G of the Basic manual
  532. for a complete description of the various assignments of key codes.
  533.  
  534.   The character does not have to be assigned to a variable.  If the
  535. variable name is not present following the command INKEY, the system will
  536. wait for any key to be pressed from the user, and then continue processing.
  537.  
  538. end
  539. bat    call -scroll | goto -line%L
  540. bat -line24
  541. bat begtype
  542.  
  543.     \0fNOW IT'S YOUR TURN !!!\07
  544.  
  545.  
  546.   We wish to create a menu with several options.  At a "\0f=>\07" prompt,
  547. the user must enter a \0fsingle letter\07 to select his option.  What is
  548. the command needed to request a single keystroke into the \0f%4\07
  549. variable for option selection using the prompt above?
  550.  
  551. end
  552. bat    %A = BAT%sINKEY%s=>%s%%4
  553. bat    call -tryit
  554. bat -opt7
  555. bat -line24 %H = PROGRAM%sCONTROL | %L = 24| %n = 7.0| call -header| begtype
  556.   There are several ways of controlling the order of execution of a program
  557. written with Extended Batch Language.  GOTO, CALL, RETURN, and IF are all
  558. commands that do this.    The simplest is the GOTO command:
  559.  
  560.     BAT GOTO -LABEL
  561.  
  562.   If this line is put into a ".BAT" file, then it will stop execution at
  563. this line and resume at the line within the file which contains:
  564.  
  565.     BAT -LABEL
  566.  
  567.   This is a unconditional branch.  If the label is not present within the
  568. file, and error will result.  Note the minus (-) sign before the label
  569. name.  \0FLabels must be preceded with a minus sign.\07 This is done so
  570. that BAT can tell the difference between a label and a command within the
  571. language.
  572. end
  573. bat    call -scroll | goto -line%L
  574. bat -line25 %n = 7.1 | call -header | begtype
  575.  
  576.   A CALL command is similar to a GOTO command.    The primary difference is
  577. that the line where the CALL command was is saved away.  Then a branch to a
  578. label is done, just like the GOTO command.  Note that up to three lines can
  579. be saved away at a time with this command.  When a RETURN command is found,
  580. the last line that was saved is now restored.  Execution resumes at the
  581. line following the original CALL command.
  582. end
  583. bat    call -scroll | goto -line%L
  584. bat -line26 %n = 7.2 | call -header | begtype
  585.   For example, if a program contains:
  586.  
  587.     BAT    TYPE One
  588.     BAT    \0FCALL -LABEL\07
  589.     BAT    \0FCALL -LABEL\07
  590.     BAT    TYPE Four
  591.     BAT    EXIT
  592.     BAT -LABEL
  593.     BAT    TYPE Two
  594.     BAT    TYPE Three
  595.     BAT    \0FRETURN\07
  596.  
  597.   You will see on the display:
  598.     ONE
  599.     TWO
  600.     THREE
  601.     TWO
  602.     THREE
  603.     FOUR
  604. end
  605. bat    call -scroll | goto -line%L
  606. bat -line27 %n = 7.3 | call -header | begtype
  607.   The final way to control the flow of an Extended Batch Language program
  608. is to use an IF command.  The general form of this command is:
  609.  
  610.     BAT IF _word_    _condition_   _word_   _operation_______
  611.  
  612.  
  613.   Each word can be a fixed string of letters, or a variable, or a
  614. combination of each.
  615.  
  616.   The conditions can be:
  617.  
  618.     <    less than
  619.     =    equal to
  620.     >    greater than
  621.     <>    not equal to
  622.  
  623.   The operation can be any of the Extended Batch Language commands.
  624. end
  625. bat    call -scroll | goto -line%L
  626. bat -line28 %n = 7.4 | call -header | begtype
  627.   For example, all of the following IF statements will compare correctly
  628. and execute their corresponding TYPE command.  The first two statements
  629. will initialize variables used in the IF commands.
  630.  
  631.     BAT %1 = ABC
  632.     BAT %2 =
  633.  
  634.     BAT IF ABC = %1  TYPE The variable contains ABC.
  635.     BAT IF %1 = abc  TYPE This also matches.
  636.     BAT IF 0 <> 00     TYPE These are different lengths.
  637.     BAT IF 0 < 00     TYPE 0 has a smaller length.
  638.     BAT IF 456 > 123 TYPE Numerically, 456 is bigger.
  639.     BAT IF 456 < %1  TYPE ASCII value of 456 is smaller.
  640.     BAT IF AABCD = A%1D TYPE Token substitutions are made.
  641.     BAT IF %2 <> %1  TYPE Variables are different lengths.
  642.     BAT IF .%2 = .     TYPE This matches if var is empty.
  643.     BAT IF BOX = BOX IF DOG <> CAT TYPE Did multi-if compare.
  644. end
  645. bat    call -scroll | goto -line%L
  646. bat -line29
  647. bat begtype
  648.  
  649.     \0fNOW IT'S YOUR TURN !!!\07
  650.  
  651.  
  652.   We wish to make a series of tests on a menu option that a user entered.
  653. It is saved in the variable \0f%4\07.  What command is needed to test for
  654. the letter "\0fA\07"?
  655.  
  656. end
  657. bat    %A = BAT%sIF%s%%4%s=%sA
  658. bat    call -tryit
  659. bat -opt8
  660. bat -line29 %H = KEYBOARD%sSTACK| %L = 29| %n = 8.0| call -header| begtype
  661.   There is a method within the BAT language for answering questions from
  662. programs without operator intervention.  This is done by a "keyboard
  663. stack".  By entering data into the stack, you will essentially be entering
  664. data through your keyboard when any program requests it.  In this way, a
  665. batch file can now answer questions programs may have by 'typing' them for
  666. the user.
  667.  
  668.   The keyboard stack operates in a "first-in first-out" basis.  That is,
  669. the first line of text put into the stack will be the first seen by the
  670. program when it reads the keyboard.  The second line entered will be the
  671. second seen by the program, and so on.    As long as there is text remaining
  672. on the stack, ALL requests for data from the keyboard will actually come
  673. from the stack.  Once the stack has been emptied by the program, data will
  674. then come from the keyboard as usual.
  675.  
  676.   There are two commands which store data into the stack, STACK and
  677. BEGSTACK. Here's some more about them.....
  678. end
  679. bat    call -scroll | goto -line%L
  680. bat -line30 %n = 8.1 | call -header | begtype
  681.   The STACK command is very much like the previously mentioned TYPE
  682. command.  Instead of displaying to the screen, it will "push" data into the
  683. keyboard stack area.  When any program is ready to accept information from
  684. the keyboard, the parameters after the STACK command will be used as input.
  685. For example:
  686.  
  687.     BAT * This program will issue remarks to DOS.
  688.     BAT %1 = HELLO
  689.     BAT STACK REM THIS IS A REMARK FOR DOS
  690.     BAT STACK REM VARIABLE %%1 = %1
  691.  
  692. When executed, the following will appear on the screen:
  693.  
  694.     A>REM THIS IS A REMARK FOR DOS
  695.  
  696.     A>REM VARIABLE %1 = HELLO
  697. end
  698. bat    call -scroll | goto -line%L
  699. bat -line31 %n = 8.2 | call -header | begtype
  700.   The second command used to stack data is BEGSTACK.  This command is
  701. equivalent to BEGTYPE previously described.  It is useful for dumping large
  702. amounts of data to the stack area.  Although no parameter substitution is
  703. performed, there are several advantages to its use.
  704.  
  705.   First, if a line ends with the ";" (semicolon) character, a carriage
  706. return will NOT be stacked.  Second, if "\\HEX" is used where HEX is a
  707.  
  708. number from 01 to FE, then this exact keyboard value will be stacked.  This
  709. is useful for stacking special control characters and symbols.    Third, if
  710. "\\00\\HEX" is used, an extended key code will be stacked.  This is useful
  711. for stacking function keys and the like.  Refer to the Basic manual in
  712. Appendix G under "Extended Codes".  Fourth, if \\FF\\HEX is used, the stack
  713. will delay the keyboard characters from appearing to the program for HEX
  714. number of CPU "ticks".  There are about 12 hex (18 decimal) ticks per
  715. second in the CPU.  In all cases, the word HEX above represents a two digit
  716. hexadecimal number. Finally, \\\\ can be used to stack a single backslash.
  717.  
  718. Some examples...
  719. end
  720. bat    call -scroll | goto -line%L
  721. bat -line32 %n = 8.3 | call -header | begtype
  722. Some examples of BEGSTACK command::
  723.  
  724.     BAT BEGSTACK
  725.     \\09 Will stack the tab key.
  726.     This text will be stacked ; 
  727.         on one line!
  728.     \\00\\3B Will stack an F1 key.
  729.     \\\\ is seen as one backslash.
  730.     \\FF\\24 will pause two seconds.
  731.     end
  732.  
  733.  
  734. Hint: Some programs remove keystrokes before accepting a critical key. In
  735. some cases this can be avoided by using \\FF\\01 in the BEGSTACK command.
  736. end
  737. bat    call -scroll | goto -line%L
  738. bat -line33 %n = 8.4 | call -header | begtype
  739. There are also three control commands which are associated with the stack:
  740.  
  741. STACK.OFF     - Redirects data to come directly from
  742.         the physical keyboard. Does not remove
  743.         any data in the stack.
  744.  
  745. STACK.ON      - Directs data to come from the stack.
  746.         This is the default.
  747.  
  748. STACK.PURGE   - Removes any data from the stack and
  749.         keyboard buffers which are pending.
  750. end
  751. bat    call -scroll | goto -line%L
  752. bat -line34
  753. bat begtype
  754.  
  755.     \0fNOW IT'S YOUR TURN !!!\07
  756.  
  757.  
  758.   From our menu, we wish to start up a communications program and
  759. automatically dial a phone number with a smartmodem.  The communications
  760. program we have will take what is typed on the keyboard and send it to the
  761. modem.    The command needed for the modem to dial our phone is
  762. "\0fATD12\07".  What Extended Batch Language command will force the
  763. communication program to dial this modem command?
  764.  
  765. end
  766. bat    %A = BAT%sSTACK%sATD12
  767. bat    call -tryit
  768. bat -opt9
  769. bat -line34 %H = GETTING%sRESULTS!| %L = 34| %n = 9.0| call -header| begtype
  770.   The results of programs often need to be known so that some action can
  771. take place after the program ends.
  772.  
  773.   When the command word READSCRN is seen in the batch file, a line of text
  774. is read from the display screen into variables.  Having the ability to read
  775. text from the display can be useful for determining the result of another
  776. program, or making a query for some system status which would not normally
  777. be available within a batch file.  For example, by reading a directory from
  778. the screen, a series of files can be submitted to the macro assembler.
  779. Once the assembly is completed, the status can be read from the screen to
  780. determine if there were errors which would stop the link step.    Virtually
  781. any message which a program can generate can be used as feedback to a batch
  782. file by using READSCRN.
  783. end
  784. bat    call -scroll | goto -line%L
  785. bat -line35 %n = 9.1 | call -header | begtype
  786.   Its operation is very much like the READ command except for the fact that
  787. the information which is being read is coming from the display screen and
  788. not the keyboard.  Like the READ command, the text from the screen is
  789. tokenized (separated at word boundaries and assigned to variables).  The
  790. return code %R will be reflect the line number on the display that was
  791. read.  This number will be in the range of 1 to 25 for the top to bottom
  792. lines respectively. Once a line is read, this command will be set to read
  793. the previous line. Repeated READSCRN commands will read UP the display!
  794.  
  795. For example:
  796.     BAT CLS
  797.     BAT TYPE HELLO THERE
  798.     BAT READSCRN %A %B %C
  799.  
  800. After execution:
  801.     %A contains HELLO
  802.     %B contains THERE
  803.     %C contains nothing, it is empty.
  804.     %R (return code) contains 1, the line number that was read.
  805. end
  806. bat    call -scroll | goto -line%L
  807. bat -line36
  808. bat begtype
  809.  
  810.     \0fNOW IT'S YOUR TURN !!!\07
  811.  
  812.  
  813.   From our menu, we have started the IBM Macro Assembler program.  We know
  814. that when this program ends, it will display a number representing the
  815. number of errors that were found.  We want to make sure that this number is
  816. zero before continuing to the LINK program.  If we save this number in the
  817. variable \0f%A\07, what is the command to read the assembler result from
  818. the display?
  819.  
  820. end
  821. bat    %A = BAT%sREADSCRN%s%%A
  822. bat    call -tryit
  823. bat -opt10
  824. bat -line36 %H = ASSIGNMENTS| %L = 36| %n = 10.0| call -header| begtype
  825.   If the first character in the command is a '%' (Percent sign), then it is
  826. considered to be an assignment statement.  The first variable cannot be any
  827. predefined variable (such as %R or %%), but may be any of the other
  828. variables %0 to %9 and %A to %O.  If a DOS command is later executed and
  829. uses one of the variables %0 to %9, it will be properly replaced with the
  830. contents of that variable.
  831.  
  832. The first assignment token, the operator, and the final tokens are optional.
  833. The assignment statement must appear in one of the following forms:
  834.  
  835. \0f[var] =                      \07- create empty variable
  836. \0f[var] = [string]        \07- simple assignment
  837. \0f[var] = [number] + [number]    \07- addition
  838. \0f[var] = [number] - [number]    \07- subtraction
  839. \0f[var] = [number] * [number]    \07- multiplication
  840. \0f[var] = [number] / [number]    \07- division
  841. \0f[var] = [string] #        \07- string length
  842. \0f[var] = [string] $ [index] [length] \07- create substring (like MID$ in BASIC)
  843. end
  844. bat    call -scroll | goto -line%L
  845. bat -line37 %n = 10.1 | call -header | begtype
  846.   \0f[var]\07 - A DOS variable or global user variable %0 to %9 and %A to
  847. %O.  It may not be a predefined variable.
  848.  
  849.   \0f[string]\07 - Any valid token.  Letters, numbers, any variable, or any
  850. combination there of.  123, ABC, and 987%J4SF are all valid strings.
  851.  
  852.   \0f[number]\07 - Any token with a numeric result in the range of 0 to
  853. 65535.    For example (if %A contains 34) the three numbers 98, %A, and 12%A5
  854. (equivalent to 12345) would all be valid numbers.  Note that numbers are
  855. always positive and should never contain a sign ( + or - ) character.
  856.  
  857.   \0f[index]\07 - Same restrictions as [number] above except that an
  858. [index] in the range 17 to 65535 is meaningless and is equivalent to the
  859. number 16.
  860.  
  861.   \0f[length]\07 - Same restrictions as [number] above except that a
  862. [length] in the range 16 to 65535 is meaningless and is equivalent to the
  863. number 15.  Note that [length] is optional and has a default value of 15.
  864.  
  865. end
  866. bat call -scroll | goto -line%L
  867. bat -line38
  868. bat begtype
  869.  
  870.     \0fNOW IT'S YOUR TURN !!!\07
  871.  
  872.  
  873.   We wish to count the number of times that a user has used a certain .BAT
  874. program.  We will keep this count in the global user variable \0f%A\07
  875. which will stay active even BETWEEN batch file execution.  What is the
  876. command needed to increase the value in this variable by one?
  877.  
  878. end
  879. bat    %A = BAT%s%%A%s=%s%%A%s+%s1
  880. bat    call -tryit
  881. bat -opt11
  882. bat -line38 %H = DEBUGGING%sAIDS| %L = 38| %n = 11.0| call -header| begtype
  883.   As an aid in debugging, the TRACE.ON command enables a trace flag which
  884. causes each line in the BAT program to be printed as it is executed.  Three
  885. '+' (plus) symbols will precede the BAT statement which is printed out as
  886. an aid.  The trace can be turned off at any time by the TRACE.OFF command.
  887.  
  888.   A trace can be active during DOS commands within the BAT program.  In
  889. addition, trace can be enabled/disabled at any time, even in immediate
  890. mode.  Once enabled, it will remain in effect until the TRACE.OFF command
  891. is executed.  Errors, execution of other BAT language files, and even
  892. executing DOS commands will not change the trace mode.
  893. end
  894. bat    call -scroll | goto -line%L
  895. bat -opt12
  896. bat -line39 %H = ADDITIONAL%sINFO| %L = 39| %n = 12.0| call -header| begtype
  897.   The size of the keyboard stack defaults to 512 bytes.  This value can be
  898. changed by making the first statement which is executed by the Extended
  899. Batch Language program be of the form:    BAT * size.  Size is the decimal
  900. number of bytes to reserve for the stack.  This must be executed, for
  901. instance, when a system reset is performed because once this area is
  902. installed, the size is never altered until another system reset.
  903.  
  904.   There are additional variables %A thru %O (oh) which are called "global
  905. user variables".  These variables are used exactly like the variables
  906. supplied by DOS (%0 to %9) with two exceptions.  First, the contents of
  907. these variables are maintained between execution of batch files for as long
  908. as the system is powered on.  This "global" feature is useful for keeping
  909. indicators BETWEEN "sessions" of the user.  Second, because DOS does not
  910. know about these variables, they \0fcannot\07 be used as variables within
  911. any DOS command.  So while "COPY %1 %2" is valid, "COPY %A %B" is not.  If
  912. you wish to use them within DOS commands, they must first be copied via a
  913. statement like "BAT %1 = %A".
  914. end
  915. bat    call -scroll | goto -line%L
  916. bat -line40 %n = 12.1 | call -header | begtype
  917.   PREDEFINED VARIABLES...
  918.  
  919.   A return code is available at memory address [0000:04FE].  If set by a
  920. program, BAT can read this byte value with the variable %R.  The string
  921. stored into this variable is in hex with leading zeros truncated.
  922.  
  923.   The current default drive is stored into the %V variable.  It is a single
  924. character.
  925.  
  926.   The status of the stack is stored into the %Q variable.  It is a "K" if
  927. the READ command will be reading from the keyboard, and a "S" if it will be
  928. reading from the stack area.
  929.  
  930.   There are two character literals.  %S represents a space literal and %%
  931. represents a percent sign.  Either of these special variables can be stored
  932. into other variables, or used for testing special cases.
  933. end
  934. bat    call -scroll | goto -line%L
  935. bat -line41 %n = 12.2 | call -header | begtype
  936. The STATEOF command will search all disk drives for the existance of a file.
  937. The name after the word STATEOF can be a specific name, general name with
  938. wildcard characters (e.g. *.EXE), or it can be a name with a specific drive
  939. specification (e.g. A:PE.EXE). In the last case, only drive A: will be
  940. searched instead of all available drives. Note also that a variable can be
  941. used instead of a file name. In this version of BAT, only files in the
  942. current directory (no paths) can be found.
  943.  
  944. The return code variable %R is used to indicate the result of the search
  945. for STATEOF. The results are:
  946.  
  947.     0 - File found on default drive.
  948.     1 - File not found.
  949.     9 - Invalid file name specified.
  950.     A to D - Same as return code 0 but instead of being found on the
  951.         default drive, it was found on drive A, B, C, or D.
  952. end
  953. bat    call -scroll | goto -line%L
  954. bat -line42 %n = 12.3 | call -header | begtype
  955.   If a you wish to put more than one command on a line, the vertical bar
  956. "|" is useful.  When used with an IF command and the test for the IF
  957. conditions fail, the entire rest of the line will be ignored.  Multiple
  958. commands within a BAT statement is very useful when combined with the IF
  959. command.  For example:
  960.  
  961.     BAT IF %A = abc TYPE this | CALL -that | GOTO -other
  962.  
  963.   If a comment is needed within a BAT program, the "*" (star) character is
  964. useful.  When used after the word BAT, all characters which follow will be
  965. ignored.  For example:
  966.  
  967.     BAT * This is a comment to the programmer.
  968. end
  969. bat    call -scroll | goto -line%L
  970. bat -line43 %n = 12.4 | call -header | begtype
  971.   That's about all the help there is!
  972.  
  973.   If you still need more information, you might wish to contribute in order
  974. to receive a complete users guide and password to the BAT-BBS hot-line.  The
  975. manual gives complete descriptions on all available commands with examples
  976. of each.  It is prepunched for an IBM binder for ready reference.  With
  977. the BAT-BBS, you can receive tips from other users and program updates just
  978. as soon as they are available.    We feel that user supported software should
  979. be a two way street.  With your help, it will work.
  980.  
  981.   If you find this program valuable, a contribution ($30 suggested) will be
  982. appreciated.  To see further benefits of contributing and for more
  983. information, see section 2 of this document.
  984.  
  985.  
  986.             Seaware Corp.
  987.              Post Office Box 1656
  988.             Delray Beach, FL 33444
  989. end
  990. bat    call -scroll | goto -line%L
  991.